package com.bawei.park2211a.park

import androidx.lifecycle.viewModelScope
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import androidx.paging.cachedIn
import com.bawei.base.bean.NoticeEntity
import com.bawei.base.mvvm.BaseViewModel
import com.bawei.base.net.ApiService
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.Flow

import javax.inject.Inject

@HiltViewModel
class ParkViewModel @Inject constructor(var apiService: ApiService) : BaseViewModel() {
    /**
     * 根据类型获取公园列表
     *
     * 此函数使用分页查询方式获取公园数据，返回一个Flow类型的PagingData，包含NoticeEntity对象
     * 它主要用于在UI中展示分页加载的公园列表，支持Paging库的高效加载机制
     * 注意：此函数的实现尚未完成，需要添加逻辑以处理page和size参数
     * 且ParkDataSource的构造函数需要一个实际的ApiService实例
     */
    fun getParksByType(): Flow<PagingData<NoticeEntity>> {
        // 创建并配置Pager对象，用于分页加载公园数据
        // 当前配置固定的pageSize为5，意味着每页包含5个公园
        //使用ParkDataSource作为数据源工厂，需要传入一个ApiService实例
        return Pager(PagingConfig(5), pagingSourceFactory = {
            ParkDataSource(apiService)
        }).flow
    }
}